
#ifndef GamePadDPad_h
#define GamePadDPad_h

#include <System/String.h>

#include <Riccsson/Xna/Framework/Input/ButtonState.h>
#include <Riccsson/Xna/Framework/Input/ButtonState.h>

namespace Riccsson
{
	namespace Xna
	{
		namespace Framework
		{
			namespace Input
			{
				// Summary:
				//     Identifies which directions on the directional pad of an Xbox 360 Controller
				//     are being pressed.
				struct GamePadDPad : public Riccsson::System::object
				{
					PROP3GET(GamePadDPad, ButtonState, Down);
					PROP3GET(GamePadDPad, ButtonState, Left);
					PROP3GET(GamePadDPad, ButtonState, Right);
					PROP3GET(GamePadDPad, ButtonState, Up);
					
					COPY_CONSTRUCTOR(GamePadDPad)
					{
						PROP3GET_INIT_COPY(GamePadDPad, ButtonState, Down);
						PROP3GET_INIT_COPY(GamePadDPad, ButtonState, Left);
						PROP3GET_INIT_COPY(GamePadDPad, ButtonState, Right);
						PROP3GET_INIT_COPY(GamePadDPad, ButtonState, Up);
					}

					public: GamePadDPad()
						: PROP3GET_INIT(GamePadDPad, Down)
						, PROP3GET_INIT(GamePadDPad, Left)
						, PROP3GET_INIT(GamePadDPad, Right)
						, PROP3GET_INIT(GamePadDPad, Up)
					{
					}

					//
					// Summary:
					//     Initializes a new instance of the GamePadDPad class.
					//
					// Parameters:
					//   upValue:
					//     Directional pad up button state.
					//
					//   downValue:
					//     Directional pad down button state.
					//
					//   leftValue:
					//     Directional pad left button state.
					//
					//   rightValue:
					//     Directional pad right button state.
					public: GamePadDPad(ButtonState upValue, ButtonState downValue, ButtonState leftValue, ButtonState rightValue)
						: PROP3GET_INIT(GamePadDPad, Down)
						, PROP3GET_INIT(GamePadDPad, Left)
						, PROP3GET_INIT(GamePadDPad, Right)
						, PROP3GET_INIT(GamePadDPad, Up)
					{
						throw;
					}

					// Summary:
					//     Identifies whether the Down direction on the Xbox 360 Controller directional
					//     pad is pressed.
					public: PROP3_GET(ButtonState, Down)
					{
						throw;
					}
					//
					// Summary:
					//     Identifies whether the Left direction on the Xbox 360 Controller directional
					//     pad is pressed.
					public: PROP3_GET(ButtonState, Left)
					{
						throw;
					}
					//
					// Summary:
					//     Identifies whether the Right direction on the Xbox 360 Controller directional
					//     pad is pressed.
					public: PROP3_GET(ButtonState, Right)
					{
						throw;
					}
					//
					// Summary:
					//     Identifies whether the Up direction on the Xbox 360 Controller directional
					//     pad is pressed.
					public: PROP3_GET(ButtonState, Up)
					{
						throw;
					}

					// Summary:
					//     Returns a value that indicates whether the current instance is equal to a
					//     specified object.
					//
					// Parameters:
					//   obj:
					//     Object with which to make the comparison.
					public: override bool Equals(Riccsson::System::object* obj)
					{
						throw;
					}
					//
					// Summary:
					//     Gets the hash code for this instance.
					public: override int GetHashCode()
					{
						throw;
					}
					//
					// Summary:
					//     Retrieves a string representation of this object.
					public: override GC_PTR<Riccsson::System::string> ToString()
					{
						throw;
					}
				};
				
				// Summary:
				//     Determines whether two GamePadDPad instances are not equal.
				//
				// Parameters:
				//   left:
				//     Object on the left of the equal sign.
				//
				//   right:
				//     Object on the right of the equal sign.
				static bool operator !=(GamePadDPad left, GamePadDPad right)
				{
					throw;
				}
				//
				// Summary:
				//     Determines whether two GamePadDPad instances are equal.
				//
				// Parameters:
				//   left:
				//     Object on the left of the equal sign.
				//
				//   right:
				//     Object on the right of the equal sign.
				static bool operator ==(GamePadDPad left, GamePadDPad right)
				{
					throw;
				}
			}
		}
	}
}

#endif